﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Maestro
{
    public partial class TipoEquipo : Form
    {
        public TipoEquipo()
        {
            InitializeComponent();
        }

        private void TipoEquipo_Load(object sender, EventArgs e)
        {
            LoadGridTipoEquipo();
        }

        private void LoadGridTipoEquipo()
        {
            LogicaNegocio.TipoEquipoBLL tipoEquipoBLL = new LogicaNegocio.TipoEquipoBLL();
            gridTipoEquipo.DataSource = tipoEquipoBLL.Listar();
            gridTipoEquipo.ClearSelection();
        }

        private void LimpiarFormulario()
        {
            txtNombreTipoEquipo.ResetText();
            btnAgregar.Tag = null;
            btnAgregar.Text = "Guardar";

            btnCancelar.Visible = false;
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            LogicaNegocio.TipoEquipoBLL tipoEquipoBLL = new LogicaNegocio.TipoEquipoBLL();

            try
            {
                if (btnAgregar.Tag == null)
                {
                    //insertar
                    Entidades.Tipo newTipoEquipo =
                        new Entidades.Tipo()
                        {
                            NombreTipo = txtNombreTipoEquipo.Text.Trim(),
                            FechaRegistro = DateTime.Now,
                            Activo = 1
                        };

                    int resultado = tipoEquipoBLL.Guardar(newTipoEquipo);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Tipo de equipo registrado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridTipoEquipo();
                    }
                }
                else
                {
                    if (btnAgregar.Tag.ToString() == "M")
                    {
                        //actualizar
                        if (gridTipoEquipo.SelectedRows.Count > 0)
                        {
                            Entidades.Tipo updTipoEquipo =
                                new Entidades.Tipo()
                                {
                                    IdTipo = (gridTipoEquipo.SelectedRows[0].DataBoundItem as Entidades.Tipo).IdTipo,
                                    NombreTipo = txtNombreTipoEquipo.Text.Trim(),
                                    FechaModificacion = DateTime.Now
                                };

                            int resultado = tipoEquipoBLL.Actualizar(updTipoEquipo);

                            if (resultado > 0)
                            {
                                MessageBox.Show("Provincia actualizada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                LimpiarFormulario();
                                LoadGridTipoEquipo();
                            }
                        }
                    }
                }
            }
            catch (ApplicationException aex)
            {
                MessageBox.Show(aex.Message, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridTipoEquipo.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Esta seguro en eliminar el tipo de equipo seleccionado?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (dr == DialogResult.Yes)
                {
                    Entidades.Tipo selTipo = gridTipoEquipo.SelectedRows[0].DataBoundItem as Entidades.Tipo;

                    LogicaNegocio.TipoEquipoBLL tipoEquipoBLL = new LogicaNegocio.TipoEquipoBLL();
                    int resultado = tipoEquipoBLL.Eliminar(selTipo);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Tipo de equipo eliminado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridTipoEquipo();
                    }
                }
            }
        }

        private void gridTipoEquipo_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridTipoEquipo.DataSource != null)
            {
                gridTipoEquipo.Columns["IdTipo"].Visible = false;
                gridTipoEquipo.Columns["NombreTipo"].HeaderText = "Tipo de equipo";
                gridTipoEquipo.Columns["FechaRegistro"].Visible = false;
                gridTipoEquipo.Columns["UsuarioRegistro"].Visible = false;
                gridTipoEquipo.Columns["FechaModificacion"].Visible = false;
                gridTipoEquipo.Columns["UsuarioModificacion"].Visible = false;
                gridTipoEquipo.Columns["Activo"].Visible = false;
            }
        }

        private void gridTipoEquipo_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridTipoEquipo.SelectedRows.Count > 0)
            {
                Entidades.Tipo selectedTipo = gridTipoEquipo.SelectedRows[0].DataBoundItem as Entidades.Tipo;

                if (selectedTipo != null)
                {
                    btnAgregar.Tag = "M";
                    btnAgregar.Text = "Modificar";

                    btnCancelar.Visible = true;
                    txtNombreTipoEquipo.Text = selectedTipo.NombreTipo.Trim();
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimpiarFormulario();
            gridTipoEquipo.ClearSelection();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }        
    }
}
